package com.example.software.dto;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

@Data
public class CompanyRegisterDTO {

    // 企业基本信息
    @NotBlank(message = "公司名称不能为空")
    private String companyName;

    @NotBlank(message = "公司地址不能为空")
    private String companyAddress;

    @NotBlank(message = "公司类型不能为空")
    private String companyType;

    // 法人信息
    @NotBlank(message = "法人姓名不能为空")
    private String legalName;

    @NotBlank(message = "法人联系方式不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "请输入正确的手机号码")
    private String legalPhone;

    @NotBlank(message = "法人身份证号不能为空")
    @Pattern(regexp = "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)", message = "请输入正确的18位身份证号码")
    private String legalIdCard;

    // 账户信息
    @NotBlank(message = "请输入正确的16位企业银行账户")
    private String bankAccount;

    @NotBlank(message = "用户名不能为空")
    @Size(min = 6, max = 20, message = "用户名长度必须在6-20个字符之间")
    @Pattern(regexp = "^[a-zA-Z0-9]+$", message = "用户名只能包含字母和数字")
    private String username;

    @NotBlank(message = "密码不能为空")
    @Pattern(regexp = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,20}$", message = "密码必须包含字母和数字，长度在8-20位之间")
    private String password;
    
    // 前端验证字段，不会持久化到数据库
    @JsonIgnore
    private String confirmPassword;
    
    @JsonIgnore
    private Boolean agreement;
} 